#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int g_val = 2;


int main()
{
  pid_t id = fork();

  if(id == 0)
  {
    //child
    int cnt = 0;
    while(1)
    {
      printf("I am a child, pid_id:%d,  ppid_id:%d , g_val:%d, &g_val:%p\n",getpid(),getppid(), g_val,&g_val);

      sleep(1);
      cnt++;
      if(cnt==5)
      {
        g_val = 200;
        printf("child chamge g_val 2 -> 200 success\n");
      }
    }
  }
  else
  {
    //father
    while(1)
    {
      sleep(1);
      printf("I am a father, pid_id:%d,  ppid_id:%d , g_val:%d, &g_val:%p\n",getpid(),getppid(), g_val,&g_val);
    }
  }


  return 0;



//  //常量
//  "hello world";
//  50;
//  'xxxx;
//
//
//
//
//
//  printf("adress: %p\n",main);
//  printf("init: %p\n",&g_val);
//  printf("uninit: %p\n",&un_g_val);
//  char *p1 = (char*)malloc(10);
//  char *p2 = (char*)malloc(10);
//  char *p3 = (char*)malloc(10); 
//
//  printf("heap_p1: %p\n",p1); // 堆地址
//  printf("heap_p2: %p\n",p2);
//  printf("heap_p3: %p\n",p3);
//  printf("stack_p1: %p\n",&p1); //栈地址
//  printf("stack_p2: %p\n",&p2);
//  printf("stack_p3: %p\n",&p3);
//
//  int i = 0;
//  for(i=0;i<argc;i++)
//  {
//    printf("argv[%d]:%p\n",i,argv[i]);
//  }
//
//  for(i=0;env[i];i++)
//  {
//    printf("env[%d]:%p\n",i,env[i]);
//  }
//  return 0;
//



}
